#include "pbdata.h"
#include "485.h"

uint8_t RS485_RX_Index = 0;
uint8_t RS485_RX_Buffer[100] ;


void RS485_Congfig(void)
{
    CLK_PeripheralClockConfig (CLK_Peripheral_USART2,ENABLE);//开启USART时钟
    USART_Init(USART2,115200,USART_WordLength_8b,USART_StopBits_1,USART_Parity_No,USART_Mode_Rx|USART_Mode_Tx);//设置USART参数9600，8N1，接收/发送
    USART_ITConfig (USART2,USART_IT_RXNE,ENABLE);//使能接收中断,中断向量号为28
    USART_Cmd (USART2,ENABLE);//使能USART
    // GPIO_ExternalPullUpConfig(RS485_PORT, GPIO_Pin_3, ENABLE);

  /* Configure USART Rx as alternate function push-pull  (software pull up)*/
    // GPIO_ExternalPullUpConfig(RS485_PORT, GPIO_Pin_4, ENABLE);
    GPIO_Init(RS485_PORT, RS485_CTRL, GPIO_Mode_Out_PP_Low_Slow);
}
/*********************************************************************************
*   函 数 名: RS485_Send_Byte
*   功能说明: RS485发送数据函数
*   形    参：u8 byte  一次发送一个字节
*   返 回 值: 无
*********************************************************************************/
void RS485_Send_Byte(u8 byte)
{

    while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET);//等待发送完成
    USART_SendData8(USART2,byte);//RS4851发送8位数据

    
 
}

void RS485_Send_Data(uint8_t *p_data, uint16_t len) {
    RS485_H;
    delay_ms(2);
    int i=0;
    for(i=0; i<len;i++) {
        // RS485_Send_Byte(p_data[i]);
        while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET);//等待发送完成
        USART_SendData8(USART2,p_data[i]);
        while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET);
    }
    //等待发送完成
    delay_ms(2);
    RS485_L;
    // delay_ms(10);

}
